/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"D7848033-C046-4426-97A0-4460D9041A5B",variableType:4}
 */
var fSalir = 0;


/**
 * Handle changed data.
 *
 * @param {Number} oldValue old value
 * @param {Number} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"199A81D8-7A31-472E-B3EC-912DE1DEBB1B"}
 */
function onDataChangeEjercicio(oldValue, newValue, event) {
	var $win = application.getWindow('ELIGE_EJERCICIO')
	if ($win)
	{
		$win.hide()
		$win.destroy()
	}
	fSalir = 1
	return true
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"2567394C-5D8A-4FCB-AC22-CECECDCEBA4C"}
 */
function iraEjercicioAlta(event) {
	var $sql = 'SELECT fecha_fin FROM ejercicios WHERE empresa = ? ORDER BY fecha_fin desc'
	var $args = [globals.gUservID]
	var $ds = databaseManager.getDataSetByQuery('contable',$sql,$args,1)
	if ($ds.getMaxRowIndex() == 0)
	{
		fSalir = 1
		var $win = application.getWindow('ELIGE_EJERCICIO')
		var $win_nombre = 'ELIGE_EJERCICIO'
		var $title = 'Elija Ejercicio'
		if (!$win)
		{
			$win_nombre = 'NUEVO_EJERCICIO'
			$title = 'Nuevo Ejercicio'
		}
		globals.formEnVentana('ejercicios_alta',$win_nombre,$title)
	}
	else
	{
		databaseManager.setAutoSave(false)
		/** @type {Date}*/
		var $fecha = $ds.getValue(1,1)
		/**@type {JSFoundSet<db:/contable/ejercicios>} */
		var $ejercicios = databaseManager.getFoundSet('contable','ejercicios')
		$ejercicios.newRecord()
		$ejercicios.empresa 		= globals.gUservID
		$ejercicios.fecha_inicio 	= new Date($fecha.getFullYear(), $fecha.getMonth(), $fecha.getDate()+1, 0,0,0,0)
		$ejercicios.fecha_fin 		= new Date($fecha.getFullYear()+1, $fecha.getMonth(), $fecha.getDate(), 23,59,59,996)
		$ejercicios.marca_cerrado 	= 0
		$ejercicios.descripcion		= 'Período: ' + utils.dateFormat($ejercicios.fecha_inicio,'dd-MM-yy') + ' - ' + utils.dateFormat($ejercicios.fecha_fin,'dd-MM-yy')
		
		databaseManager.startTransaction()
		if (databaseManager.saveData())
		{
			globals.gEjercicio = $ejercicios.ejercicio_id
			if (!globals.gAltaNumcon($ejercicios.fecha_inicio.getFullYear(), $ejercicios.fecha_inicio.getMonth()+1))
			{
				globals.gEjercicio = null
				databaseManager.rollbackTransaction()
				databaseManager.revertEditedRecords()
				globals.DIALOGS.showWarningDialog('Aviso','Tabla de numeración contiene errores','OK')
				return
			}
			databaseManager.saveData()
			databaseManager.commitTransaction()
			databaseManager.addTableFilterParam("contable",null,"ejercicio_id","=",globals.gEjercicio,"filtro_ejercicio")
			globals.DIALOGS.showInfoDialog('Aviso','El ejercicio fue dado de alta con éxito','OK')
			fSalir = 1
			var $win = application.getWindow('ELIGE_EJERCICIO')
			if ($win)
			{
				$win.hide()
				$win.destroy()
			}
		}
		else
		{
			databaseManager.rollbackTransaction()
			databaseManager.revertEditedRecords()
			globals.DIALOGS.showWarningDialog('Aviso','Ocurrión un error y no se pudo dar de alta el ejercicio','OK')
			return
		}
	}
}

/**
 * Handle hide window.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"D0C5E290-E812-42F4-8B04-142FC0B9E7E1"}
 */
function onHide(event) {
	if (globals.gEjercicio)
	{
		databaseManager.removeTableFilterParam('contable','filtro_ejercicio')
		databaseManager.addTableFilterParam("contable",null,"ejercicio_id","=",globals.gEjercicio,"filtro_ejercicio")
		var $inicio = gejercicio_to_ejercicios.fecha_inicio
		var $fin 	= gejercicio_to_ejercicios.fecha_fin 
		globals.gCargarMesesVL($inicio.getMonth()+1, $inicio.getFullYear(), $fin.getMonth()+1, $fin.getFullYear())
	}
	return (fSalir != 0)
}

/**
 * Callback method for when form is shown.
 *
 * @param {Boolean} firstShow form is shown first time after load
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"1C623304-5809-4DFD-AADA-47F8809F4885"}
 */
function onShow(firstShow, event) {
	if (globals.gEjercicio)
		fSalir = 1
	else
		fSalir = 0
}
